package com.equis.estacionamientos.bean.estacionamiento {
	import com.equis.architecture.util.Enum;

	[Bindable]
	public class TipoEstacionamiento extends Enum {
		public static const CON_PROMOCION_CON_TECHO:TipoEstacionamiento = 
			new TipoEstacionamiento("CON_PROMOCION_CON_TECHO", _, {label: 'ConPromocionConTecho'});
		public static const CON_PROMOCION_SIN_TECHO:TipoEstacionamiento = 
			new TipoEstacionamiento("CON_PROMOCION_SIN_TECHO", _, {label: 'ConPromocionSinTecho'});
		public static const SIN_PROMOCION_CON_TECHO:TipoEstacionamiento = 
			new TipoEstacionamiento("SIN_PROMOCION_CON_TECHO", _, {label: 'SinPromocionConTecho'});
		public static const SIN_PROMOCION_SIN_TECHO:TipoEstacionamiento = 
			new TipoEstacionamiento("SIN_PROMOCION_SIN_TECHO", _, {label: 'SinPromocionSinTecho'});
		
		private var _label:String
		
		function TipoEstacionamiento(value:String = null, restrictor:* = null, state:* = null) {
			super((value || CON_PROMOCION_CON_TECHO.name), restrictor);
			if(state != null) {
				this._label = state.label;
			}
		}
		
		public function get label():String {
			return _label;
		}
		
		override public function getConstants():Array {
			return [CON_PROMOCION_CON_TECHO, CON_PROMOCION_SIN_TECHO, 
				SIN_PROMOCION_CON_TECHO, SIN_PROMOCION_SIN_TECHO];
		}
		
		public static function getValues():Array {
			return CON_PROMOCION_CON_TECHO.getConstants();
		}
		
		public static function valueOf(name:String):TipoEstacionamiento {
			return TipoEstacionamiento(CON_PROMOCION_CON_TECHO.constantOf(name));
		}
		
		public static function getTipoFor(estacionamiento:IEstacionamiento):TipoEstacionamiento {
			if(estacionamiento.promocion && estacionamiento.techado) {
				return CON_PROMOCION_CON_TECHO;
			} else if(estacionamiento.promocion && !estacionamiento.techado){
				return CON_PROMOCION_SIN_TECHO;
			} else if(!estacionamiento.promocion && estacionamiento.techado) {
				return SIN_PROMOCION_CON_TECHO;
			} else {
				return SIN_PROMOCION_SIN_TECHO
			}
		}
	}
}